package com.itany.corejava.code09_集合.zuoye1;

/**
 * @author MissChen
 * @version 1.0
 * @date 2023 年11月20日 9:27
 */


/**
 * 定义一个泛型接口
 *         方法是getStr：参数是一个泛型数组，返回值返回字符串
 * 定义一个测试类
 *     测试类中定义一个泛型方法，两个参数，一个是泛型数组，一个是接口
 *     该方法直接调用接口中的getStr方法获取返回值，直接作为泛型方法的返回值
 *     在测试类的main方法中调用泛型方法，并使用匿名内部类
 *     在测试的时候，传入一个字符串类型的数组，传入一个接口
 *     如:String[] arrs={"alice","baby","cici"},
 *     最终拿到的取值是alice-baby-cici
 *
 *     在测试的时候，传入一个字符串类型的数组，传入一个接口
 *     如:Integer[] arrs={23,34,56,98},
 *     最终拿到的取值是23@34@56@98
 */
public class Test3 {

    public static void main(String[] args) {
        String[] arrs={"alice","baby","cici"};
        ReturnStr<String> returnStr=new ReturnStr<String>() {
            @Override
            public String getStr(String[] t) {
                return String.join("-",arrs);
            }
        };
        System.out.println(test(arrs,returnStr));


        Integer[] arrs2={23,34,56,98};
        ReturnStr<Integer> returnStr2=new ReturnStr<Integer>() {
            @Override
            public String getStr(Integer[] t) {
                StringBuilder builder=new StringBuilder();
                for(int i=0;i<arrs2.length;i++){
                    builder.append(arrs2[i]+"@");
                }

                return  builder.substring(0,builder.length()-1);
            }
        };

        System.out.println(test(arrs2,returnStr2));

    }

    public static <T> String test(T[] arr,ReturnStr returnStr){
        String str=returnStr.getStr(arr);
        return str;
    }


}

interface ReturnStr<T>{
    String getStr(T[] t);
}